Gitlab 数据备份和还原(填坑版) |
您所在的位置:网站首页 › gitlab 迁移数据 › Gitlab 数据备份和还原(填坑版) |
此文章适用于因更换服务器或者 gitlab 安装方式变更(普通方式 docker)进行数据迁移,或者日常备份还原。 前提条件:备份和还原的 gitlab 版本一致! gitlab 版本查看命令:gitlab-rake gitlab:env:info PS:如果是 docker 安装方式,请先登录容器在执行该命令,登录容器命令:docker exec -it gitlab /bin/bash 1 数据备份(操作备份服务器)执行备份命令,如果是 docker 安装需要先登录到 gitlab 容器 gitlab-rake gitlab:backup:create 命令执行后,会在 /var/opt/gitlab/backups/ 目录下生成一个类似于 1666142751_2022_10_19_13.6.7_gitlab_backup 备份文件,如果是 docker 安装,该文件在生成容器时配置的挂载路径中。 注意:备份中会提示“gitlab.rb 和 gitlab-secrets.json 中存在敏感信息”,不需要管。 2 拷贝数据将备份文件、gitlab.rb、gitlab-secrets.json(后面两个文件在 /etc/gitlab 目录中,docker 安装请查阅对应的挂载目录)上传到还原服务器临时目录上。 上传的方法就不详细说明了,小编这边是使用的 Secure CRT 通过 SSH 连接备份服务器,先将文件保存在 Secure CRT 安装电脑上。然后再连接还原服务器,将文件上传至临时目录。 3 还原数据(操作还原服务器) 3.1 复制还原包将临时目录中的 1666142751_2022_10_19_13.6.7_gitlab_backup 文件复制到 /var/opt/gitlab/backups/ 目录下(docker 安装复制到对应的挂载目录下) 3.2 修改 postgresql 配置这一步十分重要,否则在还原过程中会出现错误!错误信息如下: Restoring PostgreSQL database gitlabhq_production ... ERROR: must be owner of extension pg_trgm ERROR: must be owner of extension btree_gist ERROR: must be owner of extension btree_gist ERROR: must be owner of extension pg_trgm如果是 docker 安装,在执行下面的操作之前,请先登录到 gitlab 容器中 3.2.1 修改 postgresql.confvim /var/opt/gitlab/postgresql/data/postgresql.conf 修改配置: listen_addresses = '*'说明:修改端口监听地址,默认监控 localhost,* 代表 all 3.2.2 修改 pg_hba.confvim /var/opt/gitlab/postgresql/data/pg_hba.conf 增加配置: local all all trust host all all 127.0.0.1/32 trust 3.2.3 重启 gitlabgitlab-ctl restart 3.2.4 修改 postgresql 权限 $ su - gitlab-psql $ /opt/gitlab/embedded/bin/psql -h 127.0.0.1 gitlabhq_production gitlabhq_production=# ALTER USER gitlab WITH SUPERUSER; ALTER ROLE gitlabhq_production=# \q $ exit 3.3 执行恢复命令gitlab-rake gitlab:backup:restore BACKUP=1666142751_2022_10_19_13.6.7 BACKUP后面的标签是备份文件名前面部分 3.4 复制 gitlab.rb 和 gitlab-secrets.json将 gitlab.rb、gitlab-secrets.json 复制到 /etc/gitlab 目录下(docker 安装复制到对应的挂载目录下) 注意:请仔细检查 gitlab.rb 文件中以下配置是否正确,如果不正确可能导致浏览器无法访问 gitlab external_url gitlab_rails['gitlab_ssh_host'] gitlab_rails['gitlab_shell_ssh_port'] nginx['listen_port']PS:nginx['listen_port'] 不指定 nginx 会默认监听 external_url 的端口,若 external_url 没有指定端口,则 nginx 监听 80 端口 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |